// 兼容
import "babel-polyfill";
// location.href = "/index";
import Vue from "vue";
import App from "./App";
import router from "./router";

// IE9不兼容promise
import promise from "es6-promise";
promise.polyfill();
// 引入element-ui
import ELEMENT from "element-ui";
Vue.use(ELEMENT);
// 引入vuex集中数据状态管理模式
// import "./store/index";
import Vuex from "vuex";
// 注册为中间件
Vue.use(Vuex);

// 格式化传输数据
// import Qs from "qs";
// Vue.use(Qs);

// import "../node_modules/element-ui/lib/theme-chalk/index.css";
// rem适配
// import './assets/fonts/iconfont.css'
// 图表引入
// import echarts from "echarts";
// 挂载到vue实例上
// Vue.prototype.$echarts = echarts;

// import moment from 'moment'
// 引入axios
import axios from "axios";
// md5加密引入
import md5 from "js-md5";
// 引入jsonp
import VueJsonp from "vue-jsonp";
import "./assets/lib/jquery-1.12.4.min";
Vue.use(VueJsonp);
// 引入面包屑组件
// 引入常用element——icon
import "./assets/fonts/iconfont.css";
import "./assets/fonts/font_1243169_re0dsa45tzt/iconfont.css";
// import apiConfig from "../config/api.config";
// import "babel-polyfill";
// 引入当前项目的全局css样式控制文件
import "./assets/css/global.css";
Vue.prototype.$echarts = echarts;
Vue.prototype.$md5 = md5;
// 给面包屑组件注册为全局的

// 日期处理过滤器
// Vue.filter('dateFormat', v => {
//   // 1514345477
//   // moment
//   return moment(v).format('YYYY-MM-DD')
// })
// 给axios做配置
// axios.defaults.baseURL = apiConfig.baseURL;
// axios.defaults.baseURL = "http://114.116.99.234";
axios.defaults.baseURL = "https://www.raintec.cn";
// www.raintec.cn;
// axios.defaults.baseURL = "http://192.168.1.201:8080/";
// axios.defaults.withCredentials = true;

// axios.defaults.headers.post["Content-Type"] =
//   "application/x-www-form-urlencoded";
// axios.defaults.baseURL = 'http://127.0.0.1:11333/api/private/v1/'

// 设置拦截器，给axios装配token信息
axios.interceptors.request.use(
  function(config) {
    // config：对象，是axios的子级成员
    //         可以对其进行配置，这个配置信息直接会作用给axios
    //
    // console.log(config);

    // 获取token
    var token = window.sessionStorage.getItem("token");
    var session = window.sessionStorage.getItem("session");

    // 给axios的请求头中设置token信息，名称为Authorization
    config.headers.token = token;
    // session_lock;
    // if (window.sessionStorage.getItem("session_lock")) {
    //   config.headers.session = session;
    // }
    // config.headers.Accept = "application/json";
    // config.headers["Content-Type"] = "application/json";
    if (window.location.hash != "/" || window.location.hash != "/login") {
      if (!window.sessionStorage.getItem("token")) {
        // this.$router.push("/");
        window.location.hash = "/";
      }
    }

    //

    return config;
  },
  function(error) {
    return Promise.reject(error);
  }
);
//

// 添加响应拦截器
axios.interceptors.response.use(
  response => {
    // 对响应数据做点什么
    // 在请求返回到组件之前，都会先经过响应拦截器 ， 可以判断状态码的值 来决定是否要跳转 到登录页重新登录
    // 返回的信息 会被包装在 响应对象的 data 里边
    if (response.data.status == 5 || response.data.status == 11) {
      // this.$message.error(response.data.msg);
      // 弹出提示信息
      alert(response.data.msg);
      // 跳转至登录页
      // window.location.href = "/";
      location.replace("/");

      // 阻止后续代码执行
      return false;
    }
    return response;
  },
  function(error) {
    // 对响应错误做点什么
    console.log(error);

    return Promise.reject(error);
    // return;
  }
);
Vue.prototype.$http = axios;

Vue.config.productionTip = false;
// Vuex代码
// 获取实时数据部分
var user_info = window.sessionStorage.getItem("user_info");
//

user_info = JSON.parse(user_info);
const store = new Vuex.Store({
  state: {
    user_info: user_info,
    kid_station: [],
    // 报警状态的气象站的数组，
    war_station: [],
    // 报警长度
    war_station_l: 0,
    // 当前列表里点击的气象站
    weather_obj: {}
  },
  mutations: {
    weather_obj(state, data) {
      state.weather_obj = data;
    },
    kid_station(state, data) {
      state.kid_station = data;
    },
    set_user_info(state, data) {
      state.user_info = JSON.parse(data);
    },
    // 将报警状态的气象站，添加到state
    warning(state, data) {
      state.war_station = data;
      state.war_station_l = data.length;
      //
    }
  }
});

/* eslint-disable no-new */
new Vue({
  el: "#app",
  router,
  store,
  render: h => h(App)
});
